package com.lzw.bluetoothpractice.Activitys;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.lzw.bluetoothpractice.R;

import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobSMS;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.QueryListener;
import cn.bmob.v3.listener.UpdateListener;

public class SMSLoginActivity extends AppCompatActivity implements View.OnClickListener {
    private Button sms_login, get_sms;
    private EditText sms_telephone, sms_code;
    public static String APPID = "76f6ea7dee566f989b60f81b98cf772c";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_smslogin);
        Bmob.initialize(getApplicationContext(),APPID);
        init();
        sms_login.setOnClickListener(this);
        get_sms.setOnClickListener(this);
    }
    public void init() {
        sms_telephone = (EditText) this.findViewById(R.id.sms_et_telephone);
        sms_code = (EditText) this.findViewById(R.id.sms_et_code);
        sms_login = (Button) this.findViewById(R.id.sms_bt_login);
        get_sms = (Button)this.findViewById(R.id.get_sms);
    }
    @Override
    public void onClick(View v) {
        // 得到电话号码输入框得到的电话号码
        String telephone = sms_telephone.getText().toString();
        // 得到用户输入的验证码
        String code = sms_code.getText().toString();
        switch (v.getId()) {
            case R.id.get_sms:
                Toast.makeText(this, "点击了获取验证码按钮", Toast.LENGTH_SHORT).show();
                if (telephone.length() != 11) {
                    Toast.makeText(this, "请输入11位有效手机号码", Toast.LENGTH_SHORT).show();
                } else {
                    //进行获取验证码操作和倒计时1分钟操作
                    BmobSMS.requestSMSCode( telephone, "Login",new QueryListener<Integer>() {
                        @Override
                        public void done(Integer integer, BmobException e) {
                            if (e == null) {
                                //发送成功时，让获取验证码按钮不可点击，且为灰色
                                get_sms.setClickable(false);
                                get_sms.setBackgroundColor(Color.GRAY);
                                Toast.makeText(SMSLoginActivity.this, "验证码发送成功，请尽快使用", Toast.LENGTH_SHORT).show();
                                /**
                                 * 倒计时1分钟操作
                                 * 说明：
                                 * new CountDownTimer(60000, 1000),第一个参数为倒计时总时间，第二个参数为倒计时的间隔时间
                                 * 单位都为ms，其中必须要实现onTick()和onFinish()两个方法，onTick()方法为当倒计时在进行中时，
                                 * 所做的操作，它的参数millisUntilFinished为距离倒计时结束时的时间，以此题为例，总倒计时长
                                 * 为60000ms,倒计时的间隔时间为1000ms，然后59000ms、58000ms、57000ms...该方法的参数
                                 * millisUntilFinished就等于这些每秒变化的数，然后除以1000，把单位变成秒，显示在textView
                                 * 或Button上，则实现倒计时的效果，onFinish()方法为倒计时结束时要做的操作，此题可以很好的
                                 * 说明该方法的用法，最后要注意的是当new CountDownTimer(60000, 1000)之后，一定要调用start()
                                 * 方法把该倒计时操作启动起来，不调用start()方法的话，是不会进行倒计时操作的
                                 */
                                new CountDownTimer(60000, 1000) {
                                    @Override
                                    public void onTick(long millisUntilFinished) {
                                        //get_sms.setBackgroundResource(R.drawable.button_shape02);
                                        get_sms.setText(millisUntilFinished / 1000 + "秒");
                                    }
                                    @Override
                                    public void onFinish() {
                                        get_sms.setClickable(true);
                                        //get_sms.setBackgroundResource(R.drawable.button_shape);
                                        get_sms.setText("重新发送");
                                    }
                                }.start();
                                Log.e("MESSAGE:", "4");
                            } else {
                                e.printStackTrace();
                                Toast.makeText(SMSLoginActivity.this, "验证码发送失败，请检查网络连接", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
                break;

            case R.id.sms_bt_login:
                Log.e("MESSAGE:", "5");
                if (telephone.length() == 0 || code.length() == 0 || telephone.length() != 11) {
                    Log.e("MESSAGE:", "6");
                    Toast.makeText(this, "手机号或验证码输入不合法", Toast.LENGTH_SHORT).show();
                } else {
                    BmobSMS.verifySmsCode(telephone, code, new UpdateListener() {
                        @Override
                        public void done(BmobException e) {
                            if (e == null) {
                                Log.e("MESSAGE:", "7");
                                Toast.makeText(SMSLoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                                Intent intent = new Intent(SMSLoginActivity.this, IndexActivity.class);
                                startActivity(intent);
                            } else {
                                Log.e("MESSAGE:", "8");
                                Toast.makeText(SMSLoginActivity.this, "验证码错误", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
                break;
        }
    }
}

